package com.dtx.qiku.goods.service.impl;


import com.dtx.qiku.goods.dao.UserDao;
import com.dtx.qiku.goods.dao.impl.UserDaoImpl;
import com.dtx.qiku.goods.entity.User;
import com.dtx.qiku.goods.service.UserService;
import com.dtx.qiku.sessionstore.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl();

    private Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);

    @Override
    public boolean register(User user) throws IOException {

        // 根据用户名，不区分大小写，判断用户是否已被注册
        User u = userDao.findUserByUserName(user.getUserName());

        if (u != null) {
            logger.error("用户注册失败，用户已被注册");
            return false;
        }

        // 正常注册
        userDao.saveUser(user);
        logger.info("{}用户注册成功",user.getUserName());

        return false;
    }

    @Override
    public boolean login(String userName, String password) throws IOException {
        // 根据用户名，查看用户是否存在
        User u = userDao.findUserByUserName(userName);

        if(u == null){
            logger.error("{}用户登录失败，用户名或密码不正确");
            return false;
        }

        // 和数据库的密码进行比较，如果一致，则代表登录成功
        if(!password.equals(u.getPassword())){
            logger.error("用户登录失败，用户名或密码不正确");
        }

        // 存放登录用户标识，标识用户登录成功
        Session session = Session.getInstance();
        // 将用户的登录存入到 session 中
        session.setAttribute("LOGIN-FLAG",u);

        logger.info("用户{}登录在{}成功",userName,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

        return true;
    }

    @Override
    public User personal() throws IOException {

        // 存放登录用户标识，标识用户登录成功
        Session session = Session.getInstance();

        if(!session.containsKey("LOGIN-FLAG")){
            logger.error("用户未登录，没有权限访问个人信息");
            return null;
        }
        return (User) session.getAttribute("LOGIN-FLAG");
    }
}
